/*
 * @Author: 葛文杰
 * @Date: 2021/1/29 10:54
 * @Description: egg 扩展
 */
'use strict';
/**
 * 定义规范
 * 1xx:信息响应类，表示接收到请求并且继续处理
 * 2xx:处理成功响应类，表示动作被成功接收、理解和接受
 * 3xx:重定向响应类，为了完成指定的动作，必须接受进一步处理
 * 4xx:客户端错误，客户请求包含语法错误或者是不能正确执行
 * 5xx:服务端错误，服务器不能正确执行一个正确的请求
 * @see : https://juejin.im/entry/5794c6118ac247005f266b58
 * @type {Object}
 */
const statusCode = {
    200: '请求资源成功',
    201: '同步处理资源的新建或修改成功，返回包含新资源地址的 Location 头',
    202: '资源的新建或修改进入异步',
    204: '不返回响应主体的成功请求的响应，资源删除成功',
    206: '返回部分资源',
    400: '请求资源失败',
    401: '没有权限',
    403: '没有访问API权限，访问被禁止',
    404: '资源不存在',
    405: '所请求的 HTTP 方法不允许当前认证用户访问',
    406: '请求的数据格式不存在',
    410: '资源被永久删除',
    415: '请求的媒体类型错误',
    422: '请求理解成功，但是参数验证错误',
    429: '请求频率超限',
    500: '服务器内部错误',
};

/**
 *
 * @param ctx
 * @param data
 * @param status
 * @param message
 */
const ctxJSON = ({
    ctx,
    data = null,
    status = 200,
    message = statusCode[status],
}) => {
    ctx.body = {
        message,
        code: status,
        data,
    };
    ctx.status = status;
};

module.exports = {
    ctxJSON,
};
